package CalculDesSalaires.impl;

import java.util.HashSet;
import java.util.Scanner;

/**
 * Création d'un switch permettant à l'utilisateur d'avoir une entière gestion de sa company. 
 * A partir du terminal.
 * @author Hetoo
 *
 */
public class Exercice4{

	/**
	 * Execution du programme principal.
	 * @param args
	 */
	public static void main(String[] args) {

		/**
		 * Déclaration de la company. 
		 */
		HashSet<Employee> listEmployee = new HashSet<Employee>() ; 
		HashSet<Mentee> listMentee = new HashSet<Mentee>() ; 
		Company Company1 = new Company("Company1",listEmployee,listMentee);

		/**
		 * Création des employés.
		 */
		Employee employe1 = new Employee("Jean", 1000.0, 5200);
		Mentee mentee1 = new Mentee("Vincent", 1000.0, 5201);		
		Mentee mentee2 = new Mentee("Camille", 1000.0, 5202);
		Mentor mentor1 = new Mentor("Marc", 1000.0, 5203);
		
		/**
		 * Initialisation des langages.
		 */
		mentor1.setLanguage("Java"); 
		mentee1.setLanguage("Java");
		mentee2.setLanguage("Java");
		employe1.setLanguage("C++");
		
		/**
		 * Ajout des employés.
		 */
		Company1.addEmployee(employe1);
		Company1.addEmployee(mentor1);
		Company1.addEmployee(mentee1);
		Company1.addEmployee(mentee2);
		
		Company1.addEmployee(mentee1, mentor1);
		Company1.addEmployee(mentee2, mentor1);
		
		/**
		 * exercice 4.
		 */
		int choix = 0;
		while ( choix != 6 ){

		System.out.println("Faites un choix entre 1 et 4");
		System.out.println("1 : afficher la liste des employés et leurs informations (numéro de paie, nom et language) sur la console");
		System.out.println("2 : générer le rapport");
		System.out.println("3 : donner les détails d'un employé à partir de la saisie clavier de son numéro de paie");
		System.out.println("4 : ajouter des employés dynamiquement");
		System.out.println("5 : modifier le langage d'un employé");
		System.out.println("6 : quitter le programme ");

		
		Scanner sc = new Scanner(System.in);
		System.out.println("Saisir le chiffre correspondant à votre choix :");
		String str = sc.nextLine();
		choix = Integer.parseInt(str);
		
			
			System.out.println("Vous avez saisi : " + str);

			switch (choix) {
				/**
			 	* Affichage liste des employes.
			 	*/
				case 1:
					for(Employee employ : Company1.listEmployee){
						Company1.displayEmployees(employ);
					}
				break;
				
				/**
				 * générer le rapport.
				 */
				case 2 : 
					Company1.displayReport("report.txt");
				break;
					
				/**
				 * donner les détails d'un employé.
				 * A partir de son numéro de paie. 
				 */
				case 3 : 
					Scanner sc1 = new Scanner(System.in);
					System.out.println("Veuillez saisir un numéro de paie :");
					String str1 = sc1.nextLine();
					System.out.println("Vous avez saisi : " + str1);
					int numeroDePaie = Integer.parseInt(str1);
					for(Employee employ : Company1.listEmployee){
						if (employ.getNumeroDePaiement() == numeroDePaie){
							Company1.displayEmployees(employ);
						}
					}
				break; 
				
				/**
				 * ajouter un employé dynamiquement.
				 */
				case 4 : 
					Scanner sc2 = new Scanner(System.in);
					System.out.println("Entrer le nom de l'employé : ");
					String nomEmploye = sc2.nextLine();
					System.out.println("salire de base");
					String salaireDeBase = sc2.nextLine();
					System.out.println("numéro de Paie");
					String numeroPaie = sc2.nextLine();
					System.out.println("Choisir si l'employé est : ");
					System.out.println("Employee");
					System.out.println("Mentor");
					System.out.println("Mentee");
					String type = sc2.nextLine();
					System.out.println("souhaitez vous spécifié le langage de l'employé ? oui / non ");
					String ouiNon = sc2.nextLine();
					String langage  = "";

					if (ouiNon.equalsIgnoreCase("oui")==true){
						System.out.println("saisir le langage :");					
						langage  = sc2.nextLine();
					}

					
					if (type.equalsIgnoreCase("Employee")==true){
						Employee employe = new Employee(nomEmploye, Integer.parseInt(salaireDeBase), Integer.parseInt(numeroPaie));
						Company1.addEmployee(employe);
						employe.setLanguage(langage);
					}
					else if (type.equalsIgnoreCase("Mentor")==true){
						Mentor employe = new Mentor(nomEmploye, Integer.parseInt(salaireDeBase), Integer.parseInt(numeroPaie));
						Company1.addEmployee(employe);
						employe.setLanguage(langage);
					}
					else if (type.equalsIgnoreCase("Mentee")==true){
						Mentee employe = new Mentee(nomEmploye, Integer.parseInt(salaireDeBase), Integer.parseInt(numeroPaie));
						Company1.addEmployee(employe);
						employe.setLanguage(langage);
					}
					
				break;
				
				/**
				 * modification de la spécialité d'un employé.
				 */
				case 5 :
					Scanner sc5 = new Scanner(System.in);
					System.out.println("Veuillez saisir un numéro de paie :");
					String str5 = sc5.nextLine();
					System.out.println("Vous avez saisi : " + str5);
					int numeroDePaie2 = Integer.parseInt(str5);
					Scanner sc6 = new Scanner(System.in);
					System.out.println("Veuillez saisir son nouveau langage :");
					String str6 = sc6.nextLine();
					System.out.println("Vous avez saisi : " + str6);
					for(Employee employ : Company1.listEmployee){
						if (employ.getNumeroDePaiement() == numeroDePaie2){
							employ.setLanguage(str6);
							Company1.displayEmployees(employ);
						}
					}
				break;
					
			}
		}
		System.out.println("Execution terminée");
	}

}
